package com.dolphin.aiagentplatform.service;

import com.dolphin.aiagentplatform.ai.constant.AgentTypeConst;

/**
 * 聊天事务服务接口
 * 用于处理聊天相关的事务操作
 */
public interface ChatTransactionService {

    /**
     * 处理聊天会话创建或更新
     * 
     * @param chatId     聊天ID
     * @param userId     用户ID
     * @param agentType  代理类型
     * @return 处理后的聊天ID
     */
    String processChatSession(String chatId, Long userId, AgentTypeConst agentTypeConst);
    
    /**
     * 保存聊天消息
     * 
     * @param chatId    聊天ID
     * @param userId    用户ID
     * @param roles     消息角色列表（system, user, assistant）
     * @param contents  消息内容列表
     * @param modelType 模型类型
     */
    void saveChatMessages(String chatId, Long userId, String[] roles, String[] contents, String modelType);
    
    /**
     * 保存完整对话（作为一个事务）
     * 确保system、user和assistant消息作为原子操作一起保存或回滚
     * 
     * @param chatId            聊天ID
     * @param userId            用户ID
     * @param systemPrompt      系统提示（可为null）
     * @param userPrompt        用户消息
     * @param assistantResponse 助手响应
     * @param modelType         模型类型
     */
    void saveCompleteConversation(String chatId, Long userId, String systemPrompt, 
                                 String userPrompt, String assistantResponse, String modelType);

    /**
     * 保存完整对话（作为一个事务）并更新会话标题
     * 确保system、user和assistant消息作为原子操作一起保存或回滚，同时更新会话标题
     * 
     * @param chatId            聊天ID
     * @param userId            用户ID
     * @param systemPrompt      系统提示（可为null）
     * @param userPrompt        用户消息
     * @param assistantResponse 助手响应
     * @param modelType         模型类型
     */
    void saveConversationAndUpdateTitle(String chatId, Long userId, String systemPrompt, 
                                   String userPrompt, String assistantResponse, String modelType);
} 